package 剑指Offer_day05;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

/**
 * 剑指 Offer 50. 第一个只出现一次的字符
 *
 * 在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。
 *
 * 示例 1:
 *
 * 输入：s = "abaccdeff"
 * 输出：'b'
 * 示例 2:
 *
 * 输入：s = ""
 * 输出：' '
 *
 *
 * 限制：
 *
 * 0 <= s 的长度 <= 50000
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 */
public class Offer_50 {

    public char firstUniqChar(String s) {

        LinkedHashMap<Character, Integer> characterIntegerLinkedHashMap = new LinkedHashMap<>();



        char[] chars = s.toCharArray();

        for (char aChar : chars) {
            if (characterIntegerLinkedHashMap.containsKey(aChar)){

                characterIntegerLinkedHashMap.put(aChar,characterIntegerLinkedHashMap.get(aChar)+1);

            }else {
                characterIntegerLinkedHashMap.put(aChar,1);
            }
        }

        //遍历数组 找到值为一的坐标
        Set<Map.Entry<Character, Integer>> entries =
                characterIntegerLinkedHashMap.entrySet();
        for (Map.Entry<Character, Integer> entry : entries) {
            if (entry.getValue()==1){
                return entry.getKey();
            }
        }


        return ' ';

    }

    public static void main(String[] args) {
        Offer_50 offer_50 = new Offer_50();
        char leetcode = offer_50.firstUniqChar("loveleetcode");

    }

}
